<?php

namespace Modules\Admin\Http\Controllers;

use App\Admin;
use Illuminate\Events\Dispatcher;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Spatie\Permission\Models\Role;
use Modules\Admin\Http\Requests\RoleRequest;
//角色模型控制器
class RoleController extends Controller
{
    /**
     * 进来默认找index方法
     * 展示页面，并且向页面分配信息
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {

//        获得数据库中的信息
//        下面 where是条件，目的是隐藏站长用户
        $roles=Role::where('name','!=',config('hd_module.webmaster'))->get();


//        展示页面并分配接到的库中的数据
        return view('admin::role.index',compact('roles'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * 添加方法
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request)
    {

//        $post=$request->all();
//        dd($post);
//        获得数据模态框表单提交的数据
//        用上面的方法也行，用这个也行。roles表中的guard_name字段,会自动获取当前登录用户的守卫名称
         Role::create([
            'name' => $request->input('name'),
            'title' =>$request->input('title'),
         ]);
//        设置闪存信息
        session()->flash('success','角色添加成功');
        //        跳转页面
        return redirect()->route('role.index');



    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     *
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * 编辑更新方法
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,$id)
    {
//        接收模态框提交的数据
//        获得整条的$id的数据
        $role = Role::find($id);
//        将得到的数据赋值给$role中对应的字段然后存入数据库
        $role->title= $request->input('title');
        $role->name= $request->input('name');
//        将数据存入数据库
        $role->save();
//        设置闪存，提示信息
        session()->flash('success','角色修改成功');
//        跳转页面
        return redirect()->route('role.index');



    }

    /**
     * 删除方法 具体路由配置参考路由表
     * 查看路由表命令：code route:list
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
//        dd($id);
//        获得与当前点击id相同的数据库数据
        $role = Role::find($id);
//        判定当前的数据是不是站长的数据
       if($role['name'] == config('hd_modele.webmaster')){
           session()-flash('danger','没有权限删除站长');
//           跳转回当前页面
           return back();
       }

//        删除选定的第$id条数据
        Role::destroy($id);
//        设置闪存提示
        session()->flash('success','删除角色信息成功');
//        跳转页面
        return back();
    }

    /**
     * 展示路由模板
     * @param $id
     */
    public function showPermission($roleid)
    {
//        获得页面上传上来的id值对应的数据库中的角色数据
        $role = Role::find($roleid);
//        dd($roleid);
//        获得全部的权限配置 详情参看向老师手册 获取权限配置  参数1：守卫名
        $permissions = \HDModule::getPermissionByGuard('admin');


//        dd($permissions);
//        dd(123);
//        展示路由模板 将主页面上传进来的id传递进下面这个模板中 将角色全部数据扔进复选模板中进行展示
        return view('admin::role.permission',compact('permissions','role'));

    }

    /**
     * 处理权限方法
     * @param Request $request
     * @param $roleid
     */
    public function permission(Request $request,$roleid)
    {
//        dd(123);
//        接收页面传回的数据
        $role = Role::find($roleid);
//        让这个id的用户同步方法为角色添加权限 参考laravel手册中
//        dd($request->input('name'));
        $role->syncPermissions($request->input('name'));

//        设置闪存提示
        session()->flash('success','授权成功');
//        跳转页面
        return redirect()->route('role.index');

    }




}
